草庐IT

C++ 多重虚拟继承与 COM

全部标签

c# - 如何在 .NET 中创建虚拟网络适配器?

我想在运行时(通过代码)为客户端操作系统创建/添加虚拟网络适配器,最好使用C#。类似于VirtualBox/VMware/Himachi在安装他们的软件时创建的东西。我猜这将需要一些C/C++恶作剧来实现驱动程序集成,但如果仅使用C#就可以做到,那就更好了。我知道OpenVPN,他们的东西主要是用C编写的,我也知道周围有TUN/TAP驱动程序,我只是不知道这些是否是唯一不需要我创建满载网络的解决方案适用于Windows的驱动程序。 最佳答案 如果您需要简单的功能,则可以使用MicrosoftLoopbackAdapter。要安装它,

c# - 启用 native 代码调试以深入 COM 对象

我有一些代码使用由COM公开的第3方库(ArcObjects)。例如,IGeometry接口(interface)。IGeometrygeometry=GetGeometry();现在,当我想查看对象成员时,我打开一个QuickWatch:我读过几个问题,它们都指向VisualStudio2015中的“启用native代码调试”选项。我已经启用该选项但无济于事。如何让调试器公开COM对象的成员?编辑:当使用VS2010和.NET3.5时,这有效: 最佳答案 如果您还拥有组件的PDB和源代码,则启用非托管调试只会产生有用的副作用。你不

c# - 更改继承类中的抽象方法签名

假设我有一个名为Engine的类作为抽象基类。我还有派生自它的ElectrictEngine和FuelEngine类。我想创建一个为引擎加油的方法。我是否应该将其作为基类级别的抽象方法并以通用方式命名,例如fillUpEnergy?问题是,如果我有一个电动引擎,该方法采用的参数数量与燃料引擎需要传递的参数数量不同。因此,方法的签名不同。此外,是否有任何聪明的方法可以将通用方法用于两个引擎,但将其包装在更具体的名称中?例如:对于燃料发动机,“加油”,对于电动发动机,“充电电池”?同时对用户隐藏泛型方法? 最佳答案 在这种情况下,我会为

c# - COM接口(interface)指南

我不太了解COM接口(interface),所以我有一个小问题,假设我有这段代码:[Guid("148BD528-A2AB-11CE-B11F-00AA00530503"),InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]internalinterfaceIEnumWorkItems{[PreserveSig()]intNext([In]uintRequestCount,[Out]outSystem.IntPtrNames,[Out]outuintFetched);voidSkip([In]uintCount);voidReset

c# - 使用 Smtp.mail.microsoftonline.com 发送电子邮件

上下文:我们是一家小公司,没有Exchange服务器(或任何专用于它的服务器),但我们仍然需要接收/发送电子邮件。我们决定使用Microsoft在线服务(MOS)目标:我们有一个Web服务器(带有IIS6.0的WindowsServer2003R2)并部署了一个C#ASP.NetMCV应用程序。每次用户创建帐户时,Web应用程序都需要发送电子邮件。根据documentation我们需要使用端口(587)并确保启用传输层安全性(TLS)。此外,使用的FROM地址必须是“权威”类型,当我通过MicrosoftOnlineAdministrationCenter仔细检查时就是这样。代码:我的

c# - 是否可以从 .NET 测试暴露于 COM 的程序集?

我有一个.NET程序集,我通过一个tlb文件向COM公开了它,还有一个注册tlb的安装程序。我已手动检查安装程序是否正常工作以及COM客户端是否可以访问该库。到目前为止,还不错...但是,我正在尝试将一些自动化系统测试放在一起,以检查安装程序是否正常工作。作为其中的一部分,我已经在VM上自动安装,现在我想对安装的COM库进行一些调用以验证它是否正常工作。我最初考虑用VB6编写一些测试,但我已经有一大套用C#编写的测试,它们引用了.NET程序集。我希望我可以更改这些以引用.tlb,但是当我在VS2008中尝试此操作时出现错误:ActiveX类型库“blah.tlb”是从.NET程序集导出

c# - 如何检查 COM dll 是否已在 C# 中注册

我在VS2008、C#、.NET3.5和VSTO中创建了一个Office加载项。它通过ClickOnce部署。运行时配置表单执行regsvr32以注册项目中包含的“fooapi.dll”,由于ClickOnce限制,该项目无法在安装期间注册。是否有任何首选方法来检查并查看“fooapi.dll”是否在运行时在C#中注册? 最佳答案 试试Type.GetTypeFromCLSID或Type.GetTypeFromProgID快速检查COM接口(interface)是否存在的方法。或者,只需实例化对象并捕获异常,例如catch(COME

c# - 无法在 COM 客户端中添加对 COM 的引用?

创建了一个COM服务器,我注册了它。当我尝试在COM客户端中添加该COM服务器时,我无法添加,并且出现以下错误。"Areferenceto'COMTest'couldnotbeaddedTheActiveXtypeLibrary'c\user\~\Debug\COMTest.tlb'wasexportedfroma.NETassemblyandcannotaddedasareference.Addareferenceto.NETinstead"谁能告诉我这是什么错误。我以两种方式注册COM,从VS也尝试使用命令提示符。 最佳答案 这

c# - 在名为 test113.onmicrosoft.com 的租户中找不到名为 HTTPS ://test113. onmicrosoft.com/FTP 的应用程序

我必须针对AzureAD对应用程序进行身份验证。我已经创建了WebAPI并将其添加到AzureAD应用程序部分。更改了list文件,创建了一个WebAPI并使用AzureAD进行了身份验证,并创建了一个Windows窗体,其中包含以下代码:privateasyncvoidbutton1_Click(objectsender,EventArgse){stringauthority="https://login.windows.net/test113.onmicrosoft.com";stringresourceURI="https://test113.onmicrosoft.com/ft

c# - 是否存在即使在虚拟机中也可以可靠使用的唯一计算机标识符?

我正在编写一个在终端服务器上运行的小型客户端程序。我正在寻找一种方法来确保它只在指定的服务器上运行,如果它从服务器上删除,它将停止运行。我知道没有办法让它100%安全,尽管如此,我还是想让大多数高级用户难以做到这一点。我正在查看不同的唯一标识符,例如处理器ID、Windows产品ID、计算机GUID和其他UI。因为终端服务器是一个虚拟机,所以我找不到任何完全是这台机器独有的东西。关于我应该研究什么以确保它最安全的任何想法。我没有时间也没有必要让它尽可能安全,因为它会破坏应用程序本身的目的。我不想使用MAC地址。尽管它对于每台机器都是唯一的,但可以按照互联网上的说明进行欺骗。就Micro